package fr.maistre.SystemeMarché.Implementation;

import java.io.Serializable;

import fr.maistre.SystemeMarché.Interface.Joueur;
import fr.maistre.SystemeMarché.Interface.Market;
import fr.maistre.SystemeMarché.Interface.Marketable;
import fr.maistre.SystemeMarché.Interface.PointDeVente;
import fr.maistre.SystemeMarché.Interface.Stock;

public class BasicMarketPlayer implements Joueur, Serializable {

	private int argent;

	private final Stock stockDispo = new SimpleStock();

	public BasicMarketPlayer(int argent, String name, String nomDeLaCompanie) {
		super();
		this.argent = argent;

	}

	public void ajouterArgent(double quantité) {
		this.argent += quantité;

	}

	public void enleverArgent(double quantité) {
		if (this.argent < quantité) {
			this.argent = 0;
		} else {
			this.argent -= quantité;
		}
	}

	public Stock getStock() {
		return this.stockDispo;
	}


	public void acheterStock(Marketable marketable, Market marché, int quantité)
			throws Exception {
		double valeursDesBiens = quantité * marché.recupererValeur(marketable);
		if (valeursDesBiens > this.argent) {
			throw new Exception("Not enought money to perform this operation");
		} else {

		}
	}


	public int getArgent() {
		return argent;
	}



	public void vendreStock(Marketable marketable, Market market,
			PointDeVente pointDeVente, int quantité, double prixDésiré)
			throws Exception {
		int quantitéVendue = market.simulerVenteSurMarché(marketable, quantité,
				prixDésiré);
		stockDispo.retirerMarketable(marketable, quantitéVendue);
		this.ajouterArgent(quantitéVendue * prixDésiré);
	}


}
